2010年11月04日
川俣晶の縁側ソフトウェア技術雑記 total 3686 count

null許容型に置き換えられないケース

Written By: 川俣 晶連絡先

 ↓このプログラムはもちろんOK。

using System;

class Program

{

    static void Main(string[] args)

    {

        decimal a = 1.2m;

        Console.WriteLine("{0}", a.ToString("0.00"));

    }

}

 しかし、以下のように書き換えるとコンパイル不可。

        decimal? a = 1.2m;

 しかし、以下のように書き直せばdecimal?のままでもコンパイルOK。(もちろん、string.Formatを使わないで直接WriteLineで書式指定してもOK)

using System;

class Program

{

    static void Main(string[] args)

    {

        decimal? a = 1.2m;

        Console.WriteLine("{0}", string.Format("{0:0.00}",a));

    }

}

感想 §

 ここにもnull許容型の非互換性が残りますね。(まあnull値の場合に書式は決められないわけですけど)

 挙動に気付いたおがたんさんに感謝。